home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 3: Developer Tools / Linux Cubed Series 3 - Developer Tools.iso / devel / make / icmake-6.000 / icmake-6 / icmake / comp / incdec.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-02-08  |  866 b   |  43 lines

  1. /*
  2.                             I N C D E C . C
  3. */
  4.  
  5. #include "iccomp.h"
  6.  
  7. ESTRUC_ *incdec (pp, opcode, e)
  8.     PREPOST_
  9.         pp;
  10.     OPCODE_
  11.         opcode;
  12.     ESTRUC_
  13.         *e;
  14. {
  15.     register unsigned
  16.         varnr;
  17.  
  18.     if (test_operand(e, opcode))
  19.     {
  20.         semantic(illegal_type, opstring[opcode]);
  21.         return (e);
  22.     }
  23.  
  24.     if (!test_type(e, e_var))
  25.     {
  26.         semantic(lvalue_needed, opstring[opcode]);
  27.         return (e);
  28.     }
  29.  
  30.     varnr = e->evalue;
  31.     e->codelen = 0;                         /* INITIALIZED CODELEN HERE */
  32.  
  33.     gencode(e, opcode, varnr);              /* Generate INC/DEC opcode */
  34.  
  35.     e->type =                               /* Indicate pre/post inc- decrement */
  36.             (pp == pre_op) ?
  37.                 e_code | e_int | e_pre_inc_dec
  38.             :
  39.                 e_code | e_int | e_post_inc_dec;
  40.  
  41.     return (e);
  42. }
  43.